package com.jkl.untils;

import java.util.ArrayList;
import java.util.List;

import com.jkl.entity.menu.BsMenu;

public class MenuUntil {

//	public static List<BsMenu> assembleMenu(List<BsMenu> rootMenu) {
//		List<BsMenu> list = new ArrayList<BsMenu>();
//		// 遍历出 一级菜单 添加到 list
//		for (int i = 0; i < rootMenu.size(); i++) {
//			BsMenu bsMenu = rootMenu.get(i);
//			if (bsMenu.getLevel().intValue() == 1) {
//				list.add(bsMenu);
//			}
//		}
//		// 去除 一级菜单
//		rootMenu.removeAll(list);
//		// 遍历出二级菜单 添加到对应的 一级菜单
//		for (BsMenu bsMenu : list) {
//			bsMenu.setMenu(getChild(bsMenu.getRowId(), rootMenu));
//		}
//		return list;
//	}

	public static List<BsMenu> assembleMenu(List<BsMenu> rootMenu) {
		List<BsMenu> list1 = new ArrayList<BsMenu>();
		List<BsMenu> list2 = new ArrayList<BsMenu>();
		List<BsMenu> list3 = new ArrayList<BsMenu>();
		List<BsMenu> list4 = new ArrayList<BsMenu>();
		for (BsMenu bsMenu : rootMenu) {
			if (bsMenu.getLevel().intValue() == 1) {
				list1.add(bsMenu);
			} else if (bsMenu.getLevel().intValue() == 2) {
				list2.add(bsMenu);
			} else if (bsMenu.getLevel().intValue() == 3) {
				list3.add(bsMenu);
			} else if (bsMenu.getLevel().intValue() == 4) {
				list4.add(bsMenu);
			}
		}
		for (BsMenu bsMenu : list3) {
			List<BsMenu> BsMenuList = new ArrayList<BsMenu>();
			for (BsMenu bsMenu1 : list4) {
				if (bsMenu.getRowId().equals(bsMenu1.getParentId())) {
					BsMenuList.add(bsMenu1);
				}
			}
			bsMenu.setMenu(BsMenuList);
		}
		for (BsMenu bsMenu : list2) {
			List<BsMenu> BsMenuList = new ArrayList<BsMenu>();
			for (BsMenu bsMenu1 : list3) {
				if (bsMenu.getRowId().equals(bsMenu1.getParentId())) {
					BsMenuList.add(bsMenu1);
				}
			}
			bsMenu.setMenu(BsMenuList);
		}
		for (BsMenu bsMenu : list1) {
			List<BsMenu> BsMenuList = new ArrayList<BsMenu>();
			for (BsMenu bsMenu1 : list2) {
				if (bsMenu.getRowId().equals(bsMenu1.getParentId())) {
					BsMenuList.add(bsMenu1);
				}
			}
			bsMenu.setMenu(BsMenuList);
		}
		return list1;
	}

	public static List<BsMenu> getChild(int rowId, List<BsMenu> rootMenu) {
		List<BsMenu> childrenList = new ArrayList<BsMenu>();
		for (int i = 0; i < rootMenu.size(); i++) {
			BsMenu bsMenu = rootMenu.get(i);
			if (bsMenu.getParentId().intValue() == rowId) {
				childrenList.add(bsMenu);
			}
		}
		rootMenu.removeAll(childrenList);
		for (BsMenu bsMenu : childrenList) {
			bsMenu.setMenu(getGroudChild(bsMenu.getRowId(), rootMenu));
		}
		return childrenList;
	}

	public static List<BsMenu> getGroudChild(int rowId, List<BsMenu> rootMenu) {
		List<BsMenu> childrenList = new ArrayList<BsMenu>();
		for (int i = 0; i < rootMenu.size(); i++) {
			BsMenu bsMenu = rootMenu.get(i);
			if (bsMenu.getParentId().intValue() == rowId) {
				childrenList.add(bsMenu);
			}
		}
		return childrenList;
	}
}
